<?php
namespace app\manage\model;

class RebateRule extends Base
{
    protected $insert = ['addtime'];

    //添加时间
    public function getAddtimeAttr($value){
        return date('Y-m-d H:i:s', $value);
    }
    protected function setAddtimeAttr(){
        return time();
    }

    //开始时间
    public function getStarttimeAttr($value){
        return date('Y-m-d H:i:s', (int)$value);
    }
    public function setStarttimeAttr($value, $data){
        return strtotime($value);
    }

    //结束时间
    public function getEndtimeAttr($value){
        return date('Y-m-d H:i:s', (int)$value);
    }
    public function setEndtimeAttr($value){
        return strtotime($value);
    }

    //返利规则
    public function getTypeAttr($value){
        $status = config('rebate_rule');
        return $status[$value];
    }

    /*
 * 检查返利规则是否完整合法,合法示例：{0,100,0.1,'充值即返10%'}:{100,200,0.2,'满100返20%'}:{200,300,0.3,'满200返30%'}:{300,999999999999999,0.4,'满300返40%'}
 */
    public function checkRule($ruleStr){
        $res_arr=array();
        $arr=explode(":",$ruleStr);
        if($arr) {
            foreach ($arr as $item) {
                $s=substr($item,0,1);
                $e=substr($item,-1);
                if($s!="{"||$e!="}"){
                    return false;
                }
                $item = ltrim($item, "{");
                $item = rtrim($item, "}");
                $item = trim($item);
                if ($item != '') {
                    list($min, $max, $ratio, $name) = explode(",", $item);
                    $res_arr[$min] = array(
                        'min' => $min,
                        'max' => $max,
                        'ratio' => $ratio,
                        'name' => $name
                    );
                }else{
                    return false;
                }
            }
            ksort($res_arr);
        }
        $min=0;
        $max=0;
        foreach($res_arr as $item){
            if(!is_numeric($item['min'])||!is_numeric($item['max'])||$item['min']>$item['max']||!is_numeric($item['ratio'])){
                return false;
            }
            if($min==0&&$max==0){
                $min=$item['min'];
                $max=$item['max'];
            }else{
                if($item['min']!=$max+1){
                    return false;
                }else{
                    $min=$item['min'];
                    $max=$item['max'];
                }
            }
        }
        return true;
    }

}